Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Структура даних Черга

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Програмування частина 4 Технологія системного програмування

Частина тексту файла

Міністерство освіти і науки, молоді та спорту України Національний університет „Львівська політехніка” Звіт з лабораторної роботи № 4 з дисципліни: “Програмування (частина 3)” на тему: “ Структура даних Черга ” Мета роботи: Вивчення фундаментальної абстрактної структури даних - черги. Набуття практичних навичок побудови черги, дослідження динаміки її вмісту та використання черг для розв'язання прикладних задач. Постановка задачі: Змоделювати чергу або дек на базі статичного масиву згідно з завданням. Переписати основні операції для роботи з чергою (push, pop, front, empty, full) або деком (push_left, push_right, pop_left, pop_right, front_left, front_right, empty, full) і продемонструвати правильність їх виконання. Для цього (якщо в завданні не вказано інший спосіб) в програмі на вході задати послідовність з К (К>10) цілих чисел (числа вводити з клавіатури). Всі додатні числа послідовно заносити в чергу (дек), кожне від’ємне число має вилучати з черги (деку) один елемент (при роботі з деком, парні числа працюють з правим кінцем деку, а непарні – з лівим). Виводити на екран динаміку вмісту черги (деку) під час обробки заданої послідовності. Змоделювати циклічну чергу, в якій реалізований такий механізм додавання нового елемента: якщо досягнутий кінець масиву, то новий елемент додається в перший елемент масиву, якщо це можливо. Після обробки всієї заданої вхідної послідовності перевірити, чи всі числа у черзі будуть парними, чи ні. Алгоритм розв’язання задачі: main.cpp #include <iostream> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> const int CAPACITY=5; using namespace std; template <typename _data> class queue{ _data array [CAPACITY]; int first; int last; int size; public: queue(void) { size=0, first=0,last=-1; for(int i=0;i<CAPACITY;++i) array[i]=0; } int get_first(void){return first;} int get_last(void){ return last;} int get_size(void){ return size;} void push (int x) { if(size<CAPACITY) { last++,size++; if(last==CAPACITY) last=0; array[last]=x; } else cerr<<"Error: Queue is full!"<<endl; } void pop(void) { if(size!=0) { first++,size--; if(first==CAPACITY) first=0; } else cerr<<"Error: Queue is empty!"<<endl; } _data front (void) {return data[first];} bool empty(void){ return size ;} void show (void); void show_array(void); }; template<typename data> void queue <data>::show(void){ for(int i=first, j=0; j<size;++i, ++j) { if(i==CAPACITY) i=0; cout<<array[i]<<' '; if(i==last) break; } cout<<endl; } int main() { setlocale(LC_ALL,"ukr"); queue <int> object; cout<<"Тестування циклiчної черги."<<endl; cout<<"Введiть додатнi числа для додавання їх до черги, вiд'ємнi для виштовхування числа з черги або нуль для виходу."<<endl; while(true) { int number; cout<<"К = "; cin>>number; if(number<0) object.pop(); else if(number>0) object.push(number); else break; cout<<endl<<"Стан черги: "; object.show(); cout<<endl<<"Iндекс першого елемента "<<object.get_first()<<endl; cout<<"Iндекс останнього елемента "<<object.get_last()<<endl; cout<<"Розмiр черги "<<object.get_size()<<endl<<endl; } } Результати виконання програми: Висновок: В результаті виконання лабораторної роботи я освоїв фундаментальну абстрактну структуру даних черга, дослідження динаміки його вмісту та використав ці знання для виконання прикладних програм.
Антиботан аватар за замовчуванням

04.06.2014 18:06

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини